﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using RechercheEmplois.Models;

namespace RechercheEmplois.Controllers
{
    public class SauvegardeController : Controller
    {
        private ApplicationDbContext db = new ApplicationDbContext();

        // GET: /Sauvegarde/
        public ActionResult Index()
        {
            var sauvegardes = db.Sauvegardes.Include(s => s.Offre).Include(s => s.Utilisateur);
            return View(sauvegardes.ToList());
        }

        // POST: /Sauvegarde/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        public int Create(int OffreID)
        {
            if (User.Identity.IsAuthenticated)
            {
                var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
                var userId = UserManager.FindById(User.Identity.GetUserId()).Utilisateur.ID;
                var sauveVieux = db.Sauvegardes.SingleOrDefault(s => s.OffreID == OffreID && s.UtilisateurID == userId);
                if (sauveVieux == null)
                {
                    Sauvegarde sauvegarde = new Sauvegarde();
                    sauvegarde.OffreID = OffreID;
                    sauvegarde.UtilisateurID = userId;
                    sauvegarde.TempSauvegarde = DateTime.Now;

                    db.Sauvegardes.Add(sauvegarde);
                    db.SaveChanges();
                    return 1;
                }
                //Offre qui a été sauvé
                return 0;
            }
            return -1;
        }

        // GET: /Sauvegarde/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Sauvegarde sauvegarde = db.Sauvegardes.Find(id);
            if (sauvegarde == null)
            {
                return HttpNotFound();
            }
            return View(sauvegarde);
        }

        // POST: /Sauvegarde/Delete/5
        [HttpPost, ActionName("Delete")]
        public int DeleteConfirmed(int? id)
        {
            if (id == null)
            {
                return -1;
            }
            Sauvegarde sauvegarde = db.Sauvegardes.Find(id);
            if (sauvegarde == null)
            {
                return -1;
            }
            db.Sauvegardes.Remove(sauvegarde);
            db.SaveChanges();
            return 0;
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }
    }
}
